﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CommonTypes.MedicoTableAdapters;
using CommonTypes;

namespace SI2_TrabalhoFinal {
    public partial class MedicoEdit : Form {
        #region Propriedades
        public int Nif {
            get { return int.Parse(tbNif.Text); }
            set { tbNif.Text = value.ToString(); }
        }
        public int NumSegSocial {
            get { return int.Parse(tbSegSocial.Text); }
            set { tbSegSocial.Text = value.ToString(); }
        }
        public string Nome {
            get { return tbNome.Text; }
            set { tbNome.Text = value; }
        }
        public string Apelido {
            get { return tbApelido.Text; }
            set { tbApelido.Text = value; }
        }
        public DateTime DataNascimento {
            get { return DateTime.Parse(tbDataNascimento.Text); }
            set { tbDataNascimento.Text = value.ToShortDateString(); }
        }
        public string Email {
            get { return tbEmail.Text; }
            set { tbEmail.Text = value; }
        }
        public string LicMedica {
            get { return tbLicMedica.Text; }
            set { tbLicMedica.Text = value; }
        }
        public DateTime DataLicMedica {
            get { return DateTime.Parse(tbDataLicMedica.Text); }
            set { tbDataLicMedica.Text = value.ToShortDateString(); }
        }
        public int PacientesDia {
            get { return int.Parse(tbPacientesDia.Text); }
            set { tbPacientesDia.Text = value.ToString(); }
        }
        public int ListaEspera {
            get { return int.Parse(tbListaEspera.Text); }
            set { tbListaEspera.Text = value.ToString(); }
        }      
        public int NacionalidadeId {
            get { return (int)cbNacionalidade.SelectedValue; }
            set { cbNacionalidade.SelectedValue = value.ToString(); }
        }
        public bool Insert { get; set; }
        public new MasterForm Parent { get; set; }
        #endregion Propriedades

        #region ctor
        public MedicoEdit() {
            InitializeComponent();
        }

        //public MedicoEdit(Form mdiParent, MasterForm parent, bool insert)
        //    : this() {
        //    this.MdiParent = mdiParent;
        //    this.Insert = insert;
        //    this.Text += this.Insert ? " - Inserir" : " - Atualizar";
        //    this.Parent = parent;
        //}

         public MedicoEdit(Form mdiParent, MasterForm parent)
            : this(mdiParent, parent, null, null) {
             this.Text += " - Inserir";
            this.Insert = true;
        }

         public MedicoEdit(Form mdiParent, MasterForm parent, 
            Medico.PessoaRow pessoa, Medico.MedicoRow medico)
            : this() {
            this.MdiParent = mdiParent;                       
            this.Parent = parent;

            if(pessoa == null || parent == null) return;
            this.Insert = false;
            this.Text += " - Atualizar";
            this.LicMedica = medico.LicencaMedica;
            this.DataLicMedica = medico.DataLicenca;
            this.PacientesDia = medico.NumeroPacientesDiario;
            this.ListaEspera = medico.NumeroListadeEspera;
            this.Nif = pessoa.Nif;
            this.Nome = pessoa.Nome;
            this.Apelido = pessoa.UltimoNome;
            this.NumSegSocial = pessoa.NumeroSS;
            this.DataNascimento = pessoa.DataNascimento;
            this.NacionalidadeId = pessoa.IdNacionalidade;
            this.Email = pessoa.IsEMailNull() ? "" : pessoa.EMail;
        }
        #endregion ctor        

        private void MedicoEdit_Load(object sender, EventArgs e) {
            cbNacionalidade = ComboBoxHelper.FillNacionalidade(cbNacionalidade);
        }

        private void btnGuardar_Click(object sender, EventArgs e) {
            MedicoTableAdapter adapter = new MedicoTableAdapter();
            if(this.Insert) {
                adapter.Insert(this.LicMedica, this.DataLicMedica, this.PacientesDia, this.ListaEspera,
                this.Nif, this.NumSegSocial, this.Nome, this.Apelido,
                this.DataNascimento, this.NacionalidadeId, this.Email);
            }
            else {
                adapter.Update(this.LicMedica, this.DataLicMedica, this.PacientesDia, this.ListaEspera,
                this.Nif, this.NumSegSocial, this.Nome, this.Apelido,
                this.DataNascimento, this.NacionalidadeId, this.Email);
            }
            this.Parent.Refresh();
            this.Close();
        }
    }
}
